cbKeyMon	proto	:DWORD,:DWORD,:DWORD
cbGetKeyC	proto	:DWORD,:DWORD,:DWORD
cbMouseMon	proto	:DWORD,:DWORD,:DWORD
cbGetKey		proto	:DWORD
cbCheckMutex	proto
cbPlayPause	proto
cbNextTrack	proto
cbPreviousTrack	proto
cbShuffle		proto
cbGetVolume		proto
cbVolume		proto	:DWORD
cbAbout		proto
cbAboutC		proto	:DWORD,:DWORD,:DWORD,:DWORD,

MSLLHOOKSTRUCT STRUCT
	ptx			dd	?
	pty			dd	?
	mouseData	dd	?
	flags			dd	?
	time			dd	?
	dwExtraInfo	dd	?
MSLLHOOKSTRUCT EndS

KBDLLHOOKSTRUCT STRUCT
    vkCode		dd	?
    scanCode	dd	?
    flags		dd	?
    time		dd	?
    dwExtraInfo	dd	?
KBDLLHOOKSTRUCT EndS

IiTunesListVtbl STRUC
	; These are pointers to IUnknown interface
	QueryInterface         dd ?
	AddRef                 dd ?
	Release                dd ?
	; and these ones are for IiTunes
	GetTypeInfoCount		dd	?
	GetTypeInfo			dd	?
	GetIDsOfNames			dd	?
	_Invoke			dd	?
	BackTrack	dd	?
	FastForward	dd	?
	NextTrack		dd	?
	Pause		dd	?
	Play			dd	?
	PlayFile		dd	?
	PlayPause	dd	?
	PreviousTrack	dd	?
	Resume	dd	?
	Rewind	dd	?
	Stop		dd	?
	ConvertFile	dd	?
	ConvertFiles	dd	?
	ConvertTrack	dd	?
	ConvertTracks	dd	?
	CheckVersion	dd	?
	GetITObjectByID	dd	?
	CreatePlaylist	dd	?
	OpenURL		dd	?
	GotoMusicStoreHomePage	dd	?
	UpdateIPod	dd	?
	Authorize	dd	?
	Quit	dd	?
	get_Sources	dd	?
	get_Encoders	dd	?
	get_EQPresets	dd	?
	get_Visuals	dd	?
	get_Windows	dd	?
	get_SoundVolume	dd	?
	put_SoundVolume	dd	?
	get_Mute	dd	?
	put_Mute	dd	?
	get_PlayerState	dd	?
	get_PlayerPosition	dd	?
	put_PlayerPosition	dd	?
	get_CurrentEncoder		dd	?
	put_CurrentEncoder		dd	?
	get_VisualsEnabled		dd	?
	put_VisualsEnabled		dd	?
	get_FullScreenVisuals	dd	?
	put_FullScreenVisuals	dd	?
	get_VisualSize			dd	?
	put_VisualSize			dd	?
	get_CurrentVisual		dd	?
	put_CurrentVisual		dd	?
	get_EQEnabled		dd	?
	put_EQEnabled		dd	?
	get_CurrentEQPreset	dd	?
	put_CurrentEQPreset	dd	?
	get_CurrentStreamTitle	dd	?
	get_CurrentStreamURL	dd	?
	get_BrowserWindow	dd	?
	get_EQWindow		dd	?
	get_LibrarySource		dd	?
	get_LibraryPlaylist		dd	?
	get_CurrentTrack		dd	?
	get_CurrentPlaylist		dd	?
	;etc.. we don't go beyond here ;) lets be lazy.. omg added so much.. :(
IiTunesListVtbl ENDS

IPlaylistVtbl STRUC
	; These are pointers to IUnknown interface
	QueryInterface         dd ?
	AddRef                 dd ?
	Release                dd ?
	; and these ones are for IiTunes
	GetTypeInfoCount			dd	?
	GetTypeInfo			dd	?
	GetIDsOfNames			dd	?
	_Invoke		dd	?
	GetITObjectIDs		dd	?
	get_Name		dd	?
	put_Name		dd	?
	get_Index		dd	?
	get_SourceID		dd	?
	get_PlaylistID		dd	?
	get_TrackID	dd	?
	get_TrackDatabaseID	dd	?
	Delete	dd	?
	PlayFirstTrack	dd	?
	Print			dd	?
	Search		dd	?
	get_Kind		dd	?
	get_Source	dd	?
	get_Duration	dd	?
	get_Shuffle	dd	?
	put_Shuffle	dd	?
	;lets not go beyond here lol
IPlaylistVtbl ENDS

IiTunesList STRUC
	lpVtbl 		dd ?
IiTunesList ENDS

IWMPList STRUC
	lpVtbl 		dd ?
IWMPList ENDS

IWMPListVtbl STRUC
	; These are pointers to IUnknown interface
	QueryInterface         dd ?
	AddRef                 dd ?
	Release                dd ?

	Play1		dd ?
	Play2		dd ?
IWMPListVtbl ENDS
	
.const
	CB_ICON_MESSAGE	equ 13337
	CB_KILL			equ 31337
.data
	cbPlayPauseKey	dd	VK_HOME
	cbNextTrackKey	dd	VK_PRIOR
	cbPreviousTrackKey	dd	VK_NEXT
	cbTempKey		dd	0
	cbTemplParam	dd	0
	cbPlayPauselParam	dd	0
	cbNextTracklParam		dd	0
	cbPreviousTracklParam	dd	0
	cbhWin			dd	0
	
	cbOpen		db	"open",0
	cbPlayPauseFile	db	"playpause.js",0
	cbNextTrackFile	db	"nexttrack.js",0
	cbPreviousTrackFile	db	"previoustrack.js",0
	cbShuffleSet		dd	0
	cbSetKeyMessage	db	"Press a key...",0
	
	cbTitle		db	"beanTunes 1.4b",0
	
	cbUnknownButton	db	"Unkown button",0
	
	cbAlreadyRunningMessage	db	"Error",0
	cbAlreadyRunningTitle		db	"beanTunes is already running",0
	cbReservedMessage		db	"That key is reserved",0
	cbReservedTitle			db	"Sorry",0
	
	cbSetMe					db	"Set a key..",0
	cbSettingKey				dd	0
	
	cbLMSet	dd	0
	cbRMSet	dd	0
	
	CLSID_iTunesApp	GUID	<0DC0C2640h,1415h,4644h,<87h,5Ch,6Fh,4Dh,76h,98h,39h,0BAh>>
	IID_IiTunes	GUID	<9DD6680Bh,3EDCh,40DBh,<0A7h,71h,0E6h,0FEh,048h,032h,0E3h,04Ah>>
	IID_IPlaylist	GUID	<3D5E072Fh,2A77h,4B17h,<9Eh,73h,0E0h,3Bh,77h,0CCh,0CCh,0A9h>>
	IID_ITrack		GUID	<4CB0915Dh,1E54h,4727h,<0BAh,0F3h,0CEh,6Ch,0C9h,0A2h,25h,0A1>>
	
	;HKEY_CLASSES_ROOT\CLSID\{6BF52A52-394A-11d3-B153-00C04F79FAA6}
	CLSID_IWMPPlayer	GUID	<6BF52A52h,394Ah,11d3h,<0B1h,53h,00h,0C0h,4Fh,79h,0FAh,0A6h>>
	;74C09E02-F828-11d2-A74B-00A0C905F36E
	;74C09E02-F828-11d2-A74B-00A0C905F36E
	IID_IWMPControls	GUID	<74C09E02h,0F828h,11d2h,<0A7h,4Bh,00h,0A0h,0C9h,05h,0F3h,6E>>
	
	cbError			db	"Error",0
	cbErrorSetKey		db	"Error setting key",0

.data?
	cbIconData	NOTIFYICONDATA	<>
	cbhIcon	dd	?
	cbSet	dd	?
	cbKeyboardHookID	dd	?
	cbMouseHookID	dd	?
	cbMutexID	dd	?
	cbThreadID	dd	?
	cbVolumeLevel	dd	?